/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package escom.ipn.modelo.dao;

import escom.ipn.modelo.dto.PreguntaRespuesta;
import escom.ipn.modelo.dto.Respuestas;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Daniel
 */
public class PreguntaRespuestaDAO {
    public static final String SQL_SELECT_RESPUESTAS =
            "select respuestas.ID_RESPUESTA, nombre, id_tipo, Descripcion "
            + "from pregunta_respuesta "
            + "join respuestas "
            + "on respuestas.ID_RESPUESTA=pregunta_respuesta.ID_RESPUESTA " 
            + "where ID_PREGUNTA = ? "
            + "and TIPO = 0";
    public static final String SQL_SELECT_SIGUIENTE_PREGUNTA =
            "SELECT * FROM pregunta_respuesta WHERE ID_RESPUESTA = ? AND TIPO = 1";


    public List loadRespuestas(PreguntaRespuesta a,Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_SELECT_RESPUESTAS);
            ps.setInt(1, a.getIdPregunta());
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return resultados;
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
        }
    }
    
    public PreguntaRespuesta loadSiguiente(PreguntaRespuesta a,Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_SELECT_SIGUIENTE_PREGUNTA);
            ps.setInt(1, a.getIdRespuesta());
            rs = ps.executeQuery();
            List resultados = getResults1(rs);
            if (resultados.size() > 0) {
                return (PreguntaRespuesta)resultados.get(0);
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
        }
    }
    
    private List getResults(ResultSet rs)
            throws SQLException {
        List results = new ArrayList();
        while (rs.next()) {
            Respuestas a = new Respuestas();
            a.setIdRespuesta(rs.getInt("ID_RESPUESTA"));
            a.setNombre(rs.getString("NOMBRE"));
            a.setIdTipo(rs.getInt("ID_TIPO"));
            a.setDescripcion(rs.getString("Descripcion"));
            results.add(a);
        }
        return results;
    } 
    
    private List getResults1(ResultSet rs)
            throws SQLException {
        List results = new ArrayList();
        while (rs.next()) {
            PreguntaRespuesta a = new PreguntaRespuesta();
            a.setIdPregunta(rs.getInt("ID_PREGUNTA"));
            a.setIdRespuesta(rs.getInt("ID_RESPUESTA"));
            a.setTipo(rs.getInt("TIPO"));
            results.add(a);
        }
        return results;
    }
    
    private void cerrar(Connection cnn) {
        if (cnn != null) {
            try {
                cnn.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(PreparedStatement ps) {
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }
}
